srcButtonP->DrawButtonUp=DrawButtonUp; // for drawing state 0
srcButtonP->DrawButtonMouseOver=DrawButtonMouseOver; // for drawing state 1
srcButtonP->DrawButtonDown=DrawButtonDown; // for drawing state 2
srcButtonP->DrawButtonDisabled=DrawButtonDisabled; // for drawing state 3
srcButtonP->ButtonAction=ButtonAction; // action attached to this button
srcButtonP->LastButtonState=-1; // force the button to redraw
}
// Yep.
void SWGEnableButton(ButtonSpritePtr srcButtonP, int IsButtonEnabled)
{
srcButtonP->IsButtonEnabled=IsButtonEnabled;
}
// This is the catch -- allows repositioning the button sprite. [DB]
// This is an actual move proc; like the other SW move procs, is called by SW to do a move.
// If not draggable, may activate the button action.
pascal void ButtonMoveProc(SpritePtr srcSpriteP)
{
if (srcSpriteP->isVisible)
{
if ((!((ButtonSpritePtr)srcSpriteP)->MenuKeyPressed)&&(!gKeyControlTracking))
{
if ((((ButtonSpritePtr)srcSpriteP)->IsButtonEnabled)||(gDraggable))
{
// state 0 [DB]
if (gMouseButton==kCursorUp)
{
if (((ButtonSpritePtr)srcSpriteP)->TrackingMouse)
{
if (SWIsPointInSprite(srcSpriteP,gCursorPt) && gButtonsAreActive) // Button has been unclicked in active button +[DB]
{
if ((((ButtonSpritePtr)srcSpriteP)->DrawButtonMouseOver)!=NULL)
(*((ButtonSpritePtr)srcSpriteP)->DrawButtonMouseOver)((ButtonSpritePtr)srcSpriteP, !(((ButtonSpritePtr)srcSpriteP)->LastButtonState==kButtonMouseOver)); //Call the buttons draw proc for a Mouse Over
if ((((ButtonSpritePtr)srcSpriteP)->DrawButtonDown)!=NULL)
(*((ButtonSpritePtr)srcSpriteP)->DrawButtonDown)((ButtonSpritePtr)srcSpriteP, !(((ButtonSpritePtr)srcSpriteP)->LastButtonState==kButtonMouseDown)); // Button is tracking in active button
if ((((ButtonSpritePtr)srcSpriteP)->DrawButtonMouseOver)!=NULL)
(*((ButtonSpritePtr)srcSpriteP)->DrawButtonMouseOver)((ButtonSpritePtr)srcSpriteP, !(((ButtonSpritePtr)srcSpriteP)->LastButtonState==kButtonMouseOver)); // Button is tracking out of active button
if (SWIsPointInSprite(srcSpriteP,gCursorPt) && gButtonsAreActive) // +[DB]
{
if ((((ButtonSpritePtr)srcSpriteP)->DrawButtonUp)!=NULL)
(*((ButtonSpritePtr)srcSpriteP)->DrawButtonUp)((ButtonSpritePtr)srcSpriteP, !(((ButtonSpritePtr)srcSpriteP)->LastButtonState==kButtonUp)); // mouse inside of button (but tracked by a different button)
if ((((ButtonSpritePtr)srcSpriteP)->DrawButtonDisabled)!=NULL)
(*((ButtonSpritePtr)srcSpriteP)->DrawButtonDisabled)((ButtonSpritePtr)srcSpriteP, !(((ButtonSpritePtr)srcSpriteP)->LastButtonState==kButtonDisabled)); // this button is dimmed and cannot be clicked on